package cn.iocoder.yudao.module.ao.controller.admin.course.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;

@Schema(description = "管理后台 - 课程信息 Response VO")
@Data
@ExcelIgnoreUnannotated
public class CourseRespVO {

    @Schema(description = "课程ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "19444")
    @ExcelProperty("课程ID")
    private Long courseId;

    @Schema(description = "课程编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "CS001")
    @ExcelProperty("课程编码")
    private String courseCode;

    @Schema(description = "课程名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "计算机基础")
    @ExcelProperty("课程名称")
    private String courseName;

    @Schema(description = "所属学科组ID", example = "1")
    @ExcelProperty("所属学科组ID")
    private Long groupId;

    @Schema(description = "课程类型", example = "必修课")
    @ExcelProperty("课程类型")
    private String courseType;

    @Schema(description = "课程类别", example = "专业课")
    @ExcelProperty("课程类别")
    private String courseCategory;

    @Schema(description = "课程学时", example = "64")
    @ExcelProperty("课程学时")
    private Integer creditHours;

    @Schema(description = "理论学时", example = "32")
    @ExcelProperty("理论学时")
    private Integer theoryHours;

    @Schema(description = "实践学时", example = "32")
    @ExcelProperty("实践学时")
    private Integer practiceHours;

    @Schema(description = "学分", example = "3.0")
    @ExcelProperty("学分")
    private BigDecimal credits;

    @Schema(description = "先修课程ID序列", example = "1,2,3")
    @ExcelProperty("先修课程ID序列")
    private String prerequisiteCourses;

    @Schema(description = "课程描述")
    @ExcelProperty("课程描述")
    private String description;

    @Schema(description = "课程目标")
    @ExcelProperty("课程目标")
    private String objectives;

    @Schema(description = "状态（0=禁用 1=启用）", example = "1")
    @ExcelProperty("状态")
    private Integer status;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;

}